home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat31 / iobject / iobject.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-23  |  4.5 KB  |  188 lines

  1. /* Include pour les objets              */
  2. /* (C) 1992,93 par Christophe PASSUELLO */
  3. /* Mon Mar 22 18:56:52 1993             */
  4.  
  5.  
  6. #ifndef EXEC_TYPES_H
  7. #include "exec/types.h"
  8. #endif
  9.  
  10. #ifndef INTUITION_INTUITION_H
  11. #define  INTUITION_PREFERENCES_H TRUE
  12. #include <intuition/intuition.h>
  13. #endif
  14.  
  15.  
  16. /* definition d'une boite */
  17. struct Box
  18. {
  19.   UWORD x, y;
  20.   UWORD w, h;
  21. };
  22.  
  23. #define COPY_BOX(dest,src) (*((struct Box *)dest))=(*((struct Box *)src))
  24.  
  25. /* Type de bordure pour Draw3DBox */
  26. #define BOX_1IN   0
  27. #define BOX_1OUT  1
  28. #define BOX_2IN   2
  29. #define BOX_2OUT  3
  30.  
  31. /* IDCMP flags for the window */
  32. #define IDCMP_CYCLE     (GADGETUP)
  33. #define IDCMP_CHECK     (GADGETDOWN)
  34. #define IDCMP_STRING    (GADGETDOWN|GADGETUP)
  35. #define IDCMP_BUTTON    (GADGETDOWN|GADGETUP)
  36. #define IDCMP_STRING    (GADGETUP)
  37. #define IDCMP_INTEGER   (GADGETUP)
  38. #define IDCMP_SCROLLER  (GADGETDOWN|GADGETUP|MOUSEMOVE)
  39.  
  40. /* Classes d'objets */
  41. #define CLASS_CYCLE     1
  42. #define CLASS_SCROLLER  2
  43. #define CLASS_BUTTON    3
  44. #define CLASS_INTEGER   4
  45. #define CLASS_STRING    5
  46. #define CLASS_CHECK     6
  47.  
  48.  
  49. struct NewObject
  50. {
  51.   UWORD  LeftEdge, TopEdge;     /* position de l'objet */
  52.   UWORD  Width, Height;         /* taille de l'objet */
  53.   UWORD  Flags;                 /* Flags pour toutes les classes d'objet */
  54.   UWORD  ClassFlags;            /* Flags specialise pour chaque classe */
  55.   STRPTR LabelText;             /* Label de l'objet */
  56.   struct TextAttr *Font;        /* Fonte pour le label et le texte de l'objet */
  57. };
  58.  
  59.  
  60. /* Flags pour NewObject.Flags */
  61. #define LABEL_MASK    0x007f    /* position du label par rapport à l'objet */
  62. #define LABEL_ABOVE   0x0001    /* au dessus */
  63. #define LABEL_BELOW   0x0002    /* en dessous */
  64. #define LABEL_RIGHT   0x0004    /* a droite */
  65. #define LABEL_LEFT    0x0008    /* a gauche */
  66. #define LABEL_INSIDE  0x0010    /* a l'interieur */
  67. #define LABEL_HOT_KEY  0x0020   /* Souligne le caractères suivant le '_' */
  68. #define LABEL_PEN2    0x0040    /* Label ecrit avec la couleur Pen2 */
  69.  
  70. #define OBJ_DISABLED  0x0080    /* Object ghosted (Off) */
  71.  
  72.  
  73. struct NewCycle
  74. {
  75.   struct NewObject NewObj;
  76.   STRPTR *TextArray;
  77. };
  78.  
  79.  
  80. struct NewButton
  81. {
  82.   struct NewObject NewObj;
  83. };
  84.  
  85. /* ClassFlags pour les boutons */
  86. #define BT_TOGGLE      0x0001
  87. #define BT_SELECTED    0x0002
  88. #define BT_IMAGELABEL  0x0004
  89.  
  90. struct NewScroller
  91. {
  92.   struct NewObject NewObj;
  93.   UWORD Pos;
  94.   UWORD CurSize;
  95.   UWORD MaxSize;
  96. };
  97.  
  98. /* ClassFlags pour les scrollers */
  99. #define SC_VERTICAL   0x0001     /* Scroller vertical */
  100. #define SC_NOMOUSE    0x0002     /* pas de FOLLOWMOUSE */
  101.  
  102.  
  103. struct NewCheck
  104. {
  105.   struct NewObject NewObj;
  106. };
  107.  
  108. /* ClassFlags pour les checks */
  109. #define CK_CHECKED    0x0001    /* le check est coche */
  110.  
  111.  
  112. struct NewString
  113. {
  114.   struct NewObject NewObj;
  115.   STRPTR Text;
  116.   UWORD  MaxLength;
  117. };
  118.  
  119.  
  120. struct NewInteger
  121. {
  122.   struct NewObject NewObj;
  123. };
  124.  
  125. /* ClassFlags pour les integer et les string */
  126. #define STR_SINGLEBORD  0x0001
  127. #define STR_RIGHT       0x0002
  128. #define STR_CENTER      0x0004
  129.  
  130.  
  131. struct NewTextArea
  132. {
  133.   UWORD  LeftEdge, TopEdge;
  134.   UWORD  Width, Height;
  135.   UWORD  Flags;
  136.   UWORD  ClassFlags;
  137.   STRPTR LabelText;
  138.   struct TextAttr *Font;
  139.   UBYTE  FrontPen, BackPen;
  140.   UBYTE  InterLine;
  141.   UBYTE  WrMask;
  142. };
  143.  
  144. /* flags pour NewTextArea.Flags */
  145. #define TAF_SMOOTH_SCROLL 1
  146. #define TAF_CLIP_TEXT     2
  147.  
  148. /* methodes generiques pour les Object */
  149. CPTR FindObjectMsg(struct IntuiMessage *);
  150. UWORD GetObjectID(CPTR);
  151. UBYTE GetHotKey(CPTR);
  152.  
  153. /* prototypes */
  154. VOID SetIObjectColors(UBYTE, UBYTE, UBYTE, UBYTE, UBYTE);
  155. VOID Draw3DBox(struct Box *, struct RastPort *, UWORD);
  156. VOID AdjustBox(struct Box *, BOOL);
  157. VOID ExitEasyGadget();
  158. BOOL InitEasyGadget();
  159.  
  160. /* methodes pour les objets */
  161. CPTR CreateCycle(struct NewCycle *, ULONG);
  162. CPTR CreateButton(struct NewButton *, ULONG);
  163. CPTR CreateCheck(struct NewCheck *, ULONG);
  164. CPTR CreateScroller(struct NewScroller *, ULONG);
  165. CPTR CreateInteger(struct NewInteger *, ULONG);
  166. CPTR CreateString(struct NewString *, ULONG);
  167.  
  168. VOID FreeObject(CPTR);
  169. BOOL SendMsgToObject(CPTR, struct IntuiMessage *);
  170. VOID AddObjectToWindow(CPTR, struct Window *, struct Requester *);
  171. VOID RemoveObjectFromWindow(CPTR);
  172. VOID DisplayObject(CPTR);
  173. VOID EraseObject(CPTR);
  174. VOID ModifyObject(CPTR, ...);
  175. ULONG ObjectValue(CPTR);
  176. /*CPTR CreateObject(struct NewObject *, UWORD, UWORD);*/
  177. VOID ActivateObject(CPTR);
  178. VOID OnObject(CPTR);
  179. VOID OffObject(CPTR);
  180.  
  181. /* Prototypes pour les TextArea */
  182. CPTR CreateTextArea(struct NewTextArea *, struct RastPort *);
  183. VOID FreeTextArea(CPTR);
  184. VOID SetTextAreaPen(CPTR, UBYTE, UBYTE);
  185. VOID TAPuts(CPTR,char *);
  186. VOID TAPrint(CPTR,char *);
  187. VOID TAPrintf(CPTR,char *, ...);
  188.